package com.ylbh.modules.activity.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ylbh.common.pojo.activity.dto.ActivityTemplateDTO;
import com.ylbh.common.pojo.activity.dto.ShoppingActivityDTO;
import com.ylbh.common.pojo.activity.dto.WholePointActivitiesDTO;
import com.ylbh.common.pojo.activity.vo.ShoppingActivityVO;
import com.ylbh.common.utils.PageDTO;
import com.ylbh.common.utils.PageUtils;

import java.util.List;

/**
 * 活动列表
 *
 * @author mgh
 * @date 2019-04-22 10:35:33
 */
public interface SpikeActivityService extends IService<ShoppingActivityDTO> {

    /**
     * 获取活动列表
     * @param params
     * @return
     */
    PageUtils queryActivityPage(PageDTO params);

    /**
     * 获取活动名称
     * @return
     */
    List<ShoppingActivityVO> queryActivityNameList();

    /**
     * 更新活动上下架状态
     */
    void updateState();

    /**
     * 添加整点抢购时间
     * @param wholePointActivitiesDTO
     * @return
     */
    void addWholePointActivities(WholePointActivitiesDTO wholePointActivitiesDTO);

    /**
     * 获取整点时间列表
     * @param pageDTO
     * @return
     */
    PageUtils getWholePointActivitiesTime(PageDTO pageDTO);

    /**
     * 添加整点抢购模板
     * @param activityTemplateDTO
     */
    void addActivityTemplate(ActivityTemplateDTO activityTemplateDTO);

    /**
     * 获取对应抢购的模板详情
     * @param id
     * @return
     */
    ActivityTemplateDTO getActivityTemplateDetails(String id);

    /**
     * 整点抢购模板列表
     * @param pageDTO
     * @return
     */
    PageUtils queryActivityTemplateList(PageDTO pageDTO);

    /**
     * 修改整点抢购模板
     * @param activityTemplateDTO
     */
    void modifyActivityTemplateById(ActivityTemplateDTO activityTemplateDTO);

    /**
     * 删除整点抢购
     * @param asList
     */
    void removeActivityTemplate(List<String> asList);

    /**
     * 插入活动地址记录
     * @param address
     */
    void addActivityAddress(String address, String activityId);

    /**
     * 判断活动的时间区间天数
     * @param startTime
     * @param endTime
     */
    List<String> getActivityTimeDays(String startTime, String endTime);

    /**
     * 替换整点限时抢购时间
     * @param updateTime
     * @param originalTime
     * @param activityId
     */
    void modifyWholePoint(List<String> updateTime, List<String> originalTime, String activityId);

    /**
     * 修改整点和商品上下线状态
     * @param state
     */
    void modifyActivityGoodsByStateType(Integer state, String activityId);
}

